package com.iaz.tech.tools.uml.relationship.impl;

import java.util.UUID;

import com.iaz.tech.tools.message.IMessageAble;
import com.iaz.tech.tools.message.MESSAGESTATE;
import com.iaz.tech.tools.uml.relationship.Relationship;

import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * Messages are displayed as arrows. Messages can be complete,
 * lost or found; synchronous or asynchronous; call or signal.
 * In the following diagram, the first message is a synchronous message 
 * (denoted by the solid arrowhead) complete with an implicit return message; the second message is asynchronous
 * (denoted by line arrowhead), and the third is the asynchronous return message (denoted by the dashed line).
 * 
 *	消息以箭头形式显示。消息可以是完整的，
 *	丢失或找到；同步或异步；呼叫或信号。
 *	在下面的示意图中，第一个消息是同步消息
 *	（用实心箭头表示）包含一个隐式返回消息；第二个消息是异步的
 *	（用线箭头表示），第三个是异步返回消息（用虚线表示）。
 *
 */
@EqualsAndHashCode(callSuper=false)
@Data
public class NeuronMessageRelationship extends Relationship implements IMessageAble{
	
	/**
	 * Message name
	 */
	private String messageName = "";
	/**
	 * 描述
	 */
	private String dscr = "";
	/**
	 * 是否返回值
	 */
	private boolean hasReturn = false;
	
	@Override
	public String getMessage() {
		return messageName;
	}
	@Override
	public void setMessage(String msg) {
		this.messageName = msg;		
	}
	@Override
	public String getProjectID() {
		return null;
	}
	@Override
	public void putState(MESSAGESTATE state) {
		
	}
	@Override
	public MESSAGESTATE getState() {
		throw new UnsupportedOperationException("Unimplemented method 'getState'");
	}
	@Override
	public long toTimestamp() {
		throw new UnsupportedOperationException("Unimplemented method 'toTimestamp'");
	}
	@Override
	public UUID toUUID() {
		throw new UnsupportedOperationException("Unimplemented method 'toUUID'");
	}
	
}
